package sun.superstring.interface3;

public class Test {
    public static void main(String[] args) {
        // 目标：完成接口的小案例。
        // 题目：
        /* 1.请设计一个班级学生的信息管理模块：学生的数据有：姓名、性别、成绩
           2.功能一：要求打印出全班学生的信息；功能二：要求打印出全班学生的平均成绩
           注意：
           第一套方案：能打印出班级全部学生的信息；能打印班级全部学生的平均分
           第二套方案：能打印出班级全部学生的信息（包含男女人数）
                     能打印班级全部学生的平均分（要求是去掉最高分、最低分）
           要求：系统可以支持灵活的切换这些实现方案 */

        // 1.定义学生类，创建学生对象，封装学生信息，才能交给别人处理
        // 2.准备学生数据，自己造一些测试数据

        Student[] students = new Student[5];
        students[0] = new Student("张三", '男', 100);
        students[1] = new Student("李四", '男', 80);
        students[2] = new Student("王五", '男', 80);
        students[3] = new Student("赵六", '女', 30);
        students[4] = new Student("孙七", '女', 90);

        // 3.提供两套业务实现方案，支持灵活切换（解耦合）：面向接口编程。
        //     -- 定义一个接口（规范思想）：必须完成打印全班学生信息，打印平均分；
        //     -- 定义第一套实现类，实现接口：实现打印学生信息，实现打印平均分；
        //     -- 定义第二套实现类，实现接口：实现打印学生信息（男女人数），实现打印平均分（去掉最高分和最低分）；

        ClassDateInter cdi = new ClassDataInterImpl2(students);
        cdi.printAllStudentsInfos();
        cdi.printAverageScore();

    }
}
